/*
 * cupe-arduino-demo(Arduino)
 * 演示使用酷贝STM32支付器的基本功能
 * 作者: iwinyeah@163.com 
 * 
 * 经我改造的酷贝的引出脚定义：
 * 4脚版本 边 <- BOOT0 GND TX RX -> 中间USB口
 * 5脚版本 边 <- VCC BOOT0 GND TX RX -> 中间USB口
 * 7脚版本 边 <- VCC GND BOOT0 SWDIO SWCLK TX RX -> 中间USB口
 * 
 * 现已实现:
 * 1、LED闪烁(屏幕背光)
 * 2、面板按键 TM688
 * 3、TFT显示 ILI9327
 * 4、Flash存储 W25Q64
 * 5、MFRC522读卡、写卡 FM17522
 * 6、NFC TAG模拟卡 M24SR04
 * 7、RTC时钟 PCF8563
 * 8、ADC电压测量
 * 9、蜂鸣器音乐播放
 * 10、安全芯片 LKT4201(完成配置，但测试不成功)
 */
#include <cupe.h>

#include <cupeLed.h>
#include <cupeKey.h>
#include <cupeTFT.h>
#include <cupeW25q64.h>
#include <cupeMF522.h>
#include <cupeRTC.h>
#include <cupeVoltage.h>
#include <cupeMusic.h>
#include <cupeTimer.h>
#include <cupePWM.h>
#include <cupeM24SR.h>
#include <cupeLKT4201.h>

// Demo *demo = new CupeLed();
// Demo *demo = new CupeKey();
// Demo *demo = new CupeTFT();
// Demo *demo = new CupeW25Q64();
// Demo *demo = new CupeMF522();
// Demo *demo = new CupeRTC();
// Demo *demo = new CupeVoltage();
// Demo *demo = new CupeMusic();
// Demo *demo = new CupeTimer();
//Demo *demo = new CupePWM();
// Demo *demo = new CupeM24SR();

Demo *demo = new LKT();
void setup()
{
  cupe_init();
  dbLog("cupe start...\n");

  demo->init();

  // 使用浮点数 如：dbLog("float %03.2f\n", 99.323);
  // 需要在platformio.ini的build_flags中添加 -Wl,-u,_printf_float -Wl,-u,_scanf_float
  // 否则会死机
}

void loop()
{
  demo->loop();

  if (cupe_power_key())
  {
    dbLog("cupe shutdown now.\n");
    cupe_shutdown();
  }
}
